﻿namespace MLSharp.Utilities
{
	/// <summary>
	/// A generic container for holding three objects.
	/// </summary>
	public class Triple<TLeft, TMiddle, TRight>
	{
		#region Public Properties

		/// <summary>
		/// The left value.
		/// </summary>
		public TLeft Left { get; set; }

		/// <summary>
		/// The middle value.
		/// </summary>
		public TMiddle Middle { get; set; }

		/// <summary>
		/// The right value.
		/// </summary>
		public TRight Right { get; set; }

		#endregion

		#region Public Constructors

		/// <summary>
		/// Creates an empty triple.
		/// </summary>
		public Triple()
		{
			
		}

		/// <summary>
		/// Initializes the triple with the specified values.
		/// </summary>
		/// <param name="left"></param>
		/// <param name="middle"></param>
		/// <param name="right"></param>
		public Triple(TLeft left, TMiddle middle, TRight right)
		{
			Left = left;
			Middle = middle;
			Right = right;
		}

		#endregion
	}
}
